Comentario : El complemento del trabajo asi como la copia del trabajo puede ser consultado en https://github.com/VicBoxMS/prueba_entropiaIA

Librerias a utilizar

Funciones que utilizaremos

Lo ideal, sería crear un archivo funciones.py y correr la linea de codigo:

from funciones import *

Preprocesamiento

Inciso a)

a. Presenta una o varias estadísticas descriptivas que den una idea de cómo se comportan los datos (en el tiempo, en el espacio, en ambas dimensiones; por nombre del banco, tipo de queja, etc.) Las estadísticas deben acompañarse por una breve explicación que les dé sentido.

a.1 Sobre los tiempos oportunos de solucion a las quejas

Los tiempos oportunos de solución eran ligeramente mejor entre el año 2013,2014. La tendencia general de las empresas en los ultimos años parece en mantener un promedio de sus servicios de un 97\%.

Otra estadistica relevante que podemos concluir del grafico anterior es el hecho de que en los ultimos años menos del 5% de los clientes piensa que su respuesta no fue atendida en un tiempo oportuno.

Tambien pudieramos comparar la proporcion lo anterior, entre las dos instituciones financieras de nuestro interes.

El banco Nationstar Mortgage tiene proporción de tiempo de respuesta más optima que Bank of America

a.1.1 ¿Existe una relación entre el numero de quejas y el tiempo de respuesta oportuno?

Si consideramos los 25 bancos con el mayor numero de transacciones podemos notar que a menor de numero de transacciones, los bancos pueden resolver a tiempo las inquietudes reportadas, lo que se traduce en una taza de respuesta oportuna mas alta.

a.1.2 ¿Cual es el tiempo de respuesta a las quejas reportadas?

Nos damos cuenta que la mayoria de las quejas se resuelven en un día, sin embargo algunas quejas parecen resolverse inmediatamente, en ese sentido.

¿Cuales son los temas que se resuelven mas rapido?

Podemos ver que que para los tramites Moneda virtual ('Virtual Currency') y Préstamo a corto plazo'('payday loan'), es más comun que los tramites puedan ser resuelta en 0 días

a.3 ¿Cual es el medio de comunicación para hacer llegar las inquietudes ?

¿Como ha evolucionado el medio de comunicación entre el usuario y las empresas?

Independientemente del año que se quiera considerar, vemos que la mayoria de las situaciones reportadas ocurren por medio de la web. Podemos ver que en los ultimos años registrados la comunicación via internet ha tomado mas terreno y la que ha perdido mas impulso es la etiquetada como 'Referral'. El e-mail por su parte es quien tiene la menor participación para el año 2016 con un porcentaje de $0.000048*100=0.0048\% $.

Inciso b)

b. Como parte de la pregunta anterior, o en adición, crea una o varias visualizaciones que pienses que es importante para entender la base de datos. Sé selectiv@, de modo que tu(s) visualizacion(es) cuenten una historia con los datos. Puedes usar visualizaciones dinámicas (plotly, bokeh, etc.) o estáticas (matplotlib, seaborn, plotnine etc.)

b.1 ¿Que regiones estan involucradas en nuestra base de datos?

Una pregunta natural que uno se hace particularmente para este ¿De donde provienen las quejas que estan involucradas en nuestra base de datos?, de esta forma conocemos el alcance que tenemos y la generalización que podemos obtener.

No es dificil ver que la mayor parte de las inquietudes provienen de estados como CALIFORNIA y FLORIDA, habría que investigar el porque de la situación posiblemente se deba unicamente a un mayor numero de clientes en esas zonas o bien, la tasa de quejas podría ser muy alta, lo que llevaria a concluir que no se está dando un servicio adecuado.

c)

c. Utilizando un algoritmo de “edit-distance” o alguno otro que consideres pertinente, normaliza los nombres de los bancos y genera un gráfico de barras que muestre la frecuencia de quejas por banco.

Solucion :

Una vez importado edit_distance y complementandolo con la funcion correccion_nombres_bancos, proponemos la siguiente idea para normalizar los nombres:

  1. Si el nombre de un banco se repite muchas veces sería logico que el nombre esta inscrito por lo que hay que buscar un numero a partir del cual considerar que el nombre no está escrito de manera correcta, para nuestro ejemplo, nosotros asumiremos que el 10\% de los nombres está bien escrito.

  2. En este caso nuestro punto de corte en el quantil 0.1, nos lleva a pensar que aquellas instituciones de las cuales tenemos menos de 90 son posiblemente duplicados, habría que hacer un analisis más detallado para tomar la decisión. Asumiremos que si una institucion tiene mas de 90 registros, el nombre está escrito de manera correcta.

  3. De un total de 3933 nombres unicos de bancos, el corte de 90 transacciones o menos nos dice que de esos 3933 nombres solo 393 son 'correctos' mientras que 3540 son posibles errores.

El tiempo de ejucion de la correcion se estima en 1.5 horas por lo que hay que buscar la manera de optimizar nuestro codigo.

c.2 A continuación presentamos el top 10 de bancos con mayor numero de quejas, antes y despues de la normalizacion.

d)

d. ¿De qué temas hablan las quejas?

Son quejas realizadas por clientes hacia productos y servicios financieros , algunos de los principales temas/productos son:

Otra forma de visualizar el contenido es tomar la información de las quejas y elaborar una nube de palabras

Podemos ver que en conjunto los textos hablas sobre tarjetas, creditos, tasas de amortizacion, ademas de que por cuestiones de confidencialidad hay mucha informacion anonimizada. Otra perspectiva que pudieramos tener de los datos es obtener una bolsa de palabras por cada tema. (Por cuestiones de tiempo se omite).

e)

e. Desarrolla un modelo de aprendizaje no supervisado para entender una dimensión de los datos en la que son claramente clusterizables

   

Para esta parte, decidimos utilizar la columna Codigo Postal ('Zip Code') que corresponde al codigo postal donde se realiza el reporte, la información puede ser utilizada para sustituir o complementar la variable Estado ('State') ya que al clusterizar podemos encontrar similitudes entre algunos estados o estudiar mejor la frontera que existe entre ellos.

A partir de la tecnica t-sne podemos ver una cierta agrupación de los codigos postales, que de hecho coincide de manera parcial con los estados, podemos ver segmentos de puntos del mismo color, lo que hace referencia a que pertenecen a un unico estado.

Ahora bien, sobre dicha proyeccion realizada, lo ideal sería definir un numero de clusters y estudiar la posibilidad de utilizar los clusters generados como una variable predictora.

Para no definir Apriori un numero de clusters, podriamos ocupar un algoritmo DBSCAN, pero es comun que los clusters que se formen de este algoritmo sean circulares, almenos para un espacio bidimensional, los resultados de este algoritmo se omiten en el presente reporte

Por lo que podemos ver de la tecnica t-sne, estariamos pensando en que existe una conexion entre elementos del cluster, por lo que haremos un grafo que nos ayude a entender las conexión y aplicaremos un cluster aglomerativo a t-sne considerando las distancias de vecinos mas cercanos consideraremos conexiones completas y simples.

De acuerdo a las metricas ari y ami, y bajo el supuesto de que atraves del codigo postal, podemos encontrar clusters que represen a los estados, los mejores modelos de clusterización parecen ser los que consideran un enlace simple ('single') independientemente de si considere o no la conectividad (connectivity).

f)

f. Desarrolla un modelo de machine learning que prediga el tipo de producto con base en el texto. Puedes usar la técnica que desees, pero debes explicar qué métricas de evaluación usas para determinar tu elección del modelo.

Por cuestiones de tiempo evitaremos modelos como bag-of-words y tfdi y apostaremos directamente por modelos de transformers, utilizaremos un modelo previamente entrenado para crear los embeddings y tambien utilizaremos ajuste fino.

Por las capacidades de mi computadora, esta ultima parte, la haremos directamente en google collab.

La variable respuesta será el producto ( y = 'Product' ) y para realizar la prediccion utilizaremos la informacion disponible en la variables Narrativa del consumidor ( X = 'Consumer complaint narrative' ).

  1. Utilizaremo el modelo distilbert-base-uncased para realizar ingenieria de caracteristicas (extraccion de caracteristicas) y posteriormente ingresar a 2 modelos de machine learning regresión logistica y bosques aleatorios, ambos elegidos por la rapidez con la que se puede entrenar un modelo.

  2. La segunda parte de nuestra propuesta consiste en un ajuste fino del modelo distilbert a nuestros datos, con ello esperamos mejorar nuestra metrica de interes.

Fine-tuning transformers

Tratar de adaptar nuestros datos a las capas finales del modelo de transformers, mejoró nuestra metrica de interes, pasando de 0.53 a 0.62.

Por otra parte el accuracy paso de un valor de 0.74 a 0.83

La matriz de confusión muestra valores mas estables para lo que es nuestro ultimo modelo.

Creemos que es un modelo que puede mejorar de manera inmediata al alimentar con mas información los temas que tiene pocas observaciones como lo son 'Other financial service' o 'Virtual currency'.